python实用30个小技巧 您所在的位置:网站首页 python __repr__方法 python实用30个小技巧

python实用30个小技巧

#python实用30个小技巧| 来源: 网络整理| 查看: 265

1.原地交换两个数字

Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:

In [1]: x,y = 10 ,20 In [2]: print(x,y) 10 20 In [3]: x, y = y, x In [4]: print(x,y) 20 10

赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 和 。

一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。

2.链状比较操作符

比较操作符的聚合是另一个有时很方便的技巧:

In [5]: n = 10 In [6]: result = 1 < n < 20 In [7]: result Out[7]: True In [8]: result = 1 > n 24

python3:

In [86]: import sys In [87]: x = 1 In [88]: sys.getsizeof(x) Out[88]: 28 25.使用slots来减少内存开支

你是否注意到你的 Python 应用占用许多资源特别是内存?有一个技巧是使用 slots 类变量来在一定程度上减少内存开支。

import sys class FileSystem(object): def __init__(self, files, folders, devices): self.files = files self.folders = folders self.devices = devices print(sys.getsizeof( FileSystem )) class FileSystem1(object): __slots__ = ['files', 'folders', 'devices'] def __init__(self, files, folders, devices): self.files = files self.folders = folders self.devices = devices print(sys.getsizeof( FileSystem1 )) #In Python 3.5 #1-> 1016 #2-> 888

很明显,你可以从结果中看到确实有内存使用上的节省,但是你只应该在一个类的内存开销不必要得大时才使用 slots。只在对应用进行性能分析后才使用它,不然地话,你只是使得代码难以改变而没有真正的益处。

26.使用lambda来模仿输出方法 In [89]: import sys In [90]: lprint = lambda *args: sys.stdout.write("".join(map(str,args))) In [91]: lprint("python","tips",1000,1001) Out[91]: pythontips1000100118 27.从两个相关的序列构建一个字典 In [92]: t1 = (1,2,3) In [93]: t2 =(10,20,30) In [94]: dict(zip(t1,t2)) Out[94]: {1: 10, 2: 20, 3: 30} 28.一行代码搜索字符串的多个前后缀 In [95]: print("http://www.google.com".startswith(("http://", "https://"))) True In [96]: print("http://www.google.co.uk".endswith((".com", ".co.uk"))) True 29. 不使用循环构造一个列表 In [101]: test = [[-1, -2], [30, 40], [25, 35]] In [102]: import itertools In [103]: print(list(itertools.chain.from_iterable(test))) [-1, -2, 30, 40, 25, 35] 30.在Python中实现一个真正的switch-case语句

下面的代码使用一个字典来模拟构造一个switch-case。

In [104]: def xswitch(x): ...: return xswitch._system_dict.get(x, None) ...: In [105]: xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2} In [106]: print(xswitch('default')) None In [107]: print(xswitch('devices')) 2

最后一个黑人问号???

文章来源http://python.jobbole.com/87605/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有